In microcomputers and other microprocessor integrated circuits, multi-function registers are used for incrementing addresses, decrementing counts, storing control information, and storing status information as well as other functions. These registers are typically similar to static random access memories (SRAMs) in that each register stores one bit of information. The selection procedure is somewhat different than for SRAMs because the registers have predetermined functions and combinations of functions. Consequently the selecting (or decoding) can be more specific instead of supplying a general solution as provided by a standard SRAM. Additionally, the information is clocked from the registers in a predetermined fashion.
The lines which enable a register are called control lines. Each register receives and outputs data on a data line. Some registers are double-ended and some are single-ended. A double-ended register has a pair of input/output (I/O) terminals which are complementary. A single-ended register has a single I/O terminal. In a single-ended register system, precharging the I/O terminals increases speed. In a situation in which a large number of registers are to be coupled to the same primary bus or busses, the natural way of achieving this is by having all of these registers coupled to the same data line. This is fine if the data line is metal. Typically, however, there is only one metal layer. Consequently, only a limited number of lines can be in metal. It is thus desirable for the data line to be polysilicon. A long polysilicon line, however, has a slow response time and presents a significant load to a signal which drives such a line.